/*
 * Entidad.h
 *
 *  Created on: 24/03/2013
 *      Author: Juliansci
 */

#ifndef ENTIDAD_H_
#define ENTIDAD_H_
#include <iostream>
#include "TipoEntidad.h"
#include "../constantes.h"
#include "Ataque.h"

using namespace std;
class Entidad {
public:
	static int identificador;
	Entidad();
	virtual ~Entidad();
	void setTipo(TipoEntidad*);
	TipoEntidad* getTipo();
	void setCoordenadas(int,int);
	int getX();
	int getY();
	bool isTransitable();
	void setAccion(string);
	string getAccion();
	int getCuadroActual();
	void setCuadroActual(int x);
	int getFrameAnimacion();
	void setFrameAnimacion(int num_frame);
	void avanzarAnimacion(int tiempoTransc);
	void setContadorDelay(int delay);
	int getContadorDelay();
	void setContador(int cont);
	int getContador();
	bool isDelayActivo();
	void setDelayActivo(bool delayActivo);
	int getVida();
	void setVida(int vida);
	int getVidaMaxima();
	void setVidaMaxima(int vida);
	int recibirAtaque(int);
	int recibirAtaque(Ataque* unAtaque);
	void dejaBonusAlAzar(map<string,TipoEntidad*> mapaTipoEntidades);
	int getId();
	void setId(int id);
	string serialize();
	bool esFueAtacada();
	void setFueAtacada(bool fueAtacada);
	void setNombreDestructor(string);
	string getNombreDestructor();
private:
	int frameAnimacion;
	bool delayActivo;
	bool fueAtacada;

protected:
	int x,y;
	int cuadroActual,cantCuadros;
	int vida, vidaMaxima;
	int fps, contador, contadorDelay;
	string accion;
	string nombreDestructor;
	TipoEntidad *tipo;
	int id;


};

#endif /* ENTIDAD_H_ */

